Skip to content

Latest commit

 

History

History
56 lines (44 loc) · 1.57 KB

File metadata and controls

56 lines (44 loc) · 1.57 KB

1862. Sum of Floored Pairs

Given an integer array nums, return the sum of floor(nums[i] / nums[j]) for all pairs of indices 0 <= i, j < nums.length in the array. Since the answer may be too large, return it modulo109 + 7.

The floor() function returns the integer part of the division.

Example 1:

Input: nums = [2,5,9] Output: 10 Explanation: floor(2 / 5) = floor(2 / 9) = floor(5 / 9) = 0 floor(2 / 2) = floor(5 / 5) = floor(9 / 9) = 1 floor(5 / 2) = 2 floor(9 / 2) = 4 floor(9 / 5) = 1 We calculate the floor of the division for every pair of indices in the array then sum them up. 

Example 2:

Input: nums = [7,7,7,7,7,7,7] Output: 49 

Constraints:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105

Solutions (Python)

1. Solution

classSolution: defsumOfFlooredPairs(self, nums: List[int]) ->int: prevsum=0ret=0nums.sort() forjinrange(len(nums)): ifj>0andnums[j] ==nums[j-1]: ret= (ret+prevsum) %1000000007continuei=bisect.bisect(nums, nums[j] -1) prevsum=0forxinrange(1, nums[-1] //nums[j] +1): k=bisect.bisect(nums, nums[j] * (x+1) -1, lo=i) prevsum= (prevsum+x* (k-i)) %1000000007i=kret= (ret+prevsum) %1000000007returnret
close